﻿namespace Known.FreeSql;

class FreeSqlHelper
{
    internal static IServiceProvider Provider { get; set; }

    internal static IFreeSql CreateFreeSql()
    {
        return Provider.GetRequiredService<IFreeSql>();
    }

    internal static DatabaseType GetDatabaseType(DataType dbType)
    {
        switch (dbType)
        {
            case DataType.Sqlite:
                return DatabaseType.SQLite;
            case DataType.MsAccess:
                return DatabaseType.Access;
            case DataType.SqlServer:
            case DataType.OdbcSqlServer:
            case DataType.CustomSqlServer:
                return DatabaseType.SqlServer;
            case DataType.Oracle:
            case DataType.OdbcOracle:
            case DataType.CustomOracle:
                return DatabaseType.Oracle;
            case DataType.MySql:
            case DataType.OdbcMySql:
            case DataType.CustomMySql:
                return DatabaseType.MySql;
            case DataType.PostgreSQL:
            case DataType.OdbcPostgreSQL:
            case DataType.CustomPostgreSQL:
                return DatabaseType.PgSql;
            case DataType.Dameng:
            //case DataType.OdbcDameng:
            //    return DatabaseType.DM;
            case DataType.Odbc:
            //case DataType.OdbcKingbaseES:
            case DataType.ShenTong:
            case DataType.KingbaseES:
            case DataType.Firebird:
            case DataType.Custom:
            case DataType.ClickHouse:
            case DataType.GBase:
            case DataType.QuestDb:
            case DataType.Xugu:
            default:
                return DatabaseType.Other;
        }
    }
}